SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TDREND_GAST_I02]    
/*---------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                  --*/      
/*---Cliente              : OFISIS  S.A.              --*/      
/*---Sistema              : Tesoreria                    --*/      
/*---M«dulo               : Empresa                      --*/      
/*---Programa             : Inserci½n TDREND_GAST  --*/      
/*---Script               : ttproc_i.sql                 --*/      
/*---Nombre SP            : SP_TTPROC_INTE_I02           --*/      
/*---Desarrollado por     : Javier Flores A.             --*/      
/*---Fecha Creaci«n       : 02/08/1999                   --*/      
/*---Base Datos           : Microsoft Sql Server         --*/      
/*---Versi«n              : 7.0                          --*/      
/*---Invoca a SP          :                              --*/      
/*---------------------------------------------------------*/      
/*---------------------------------------------------------*/    
/*---Modificado 1 por     : Carlos Marquez               --*/    
/*---Fecha Modificaci«n   : 19/01/2005                   --*/    
/*---Detalle Modificaci«n : Tema SPOT                    --*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/      
/*---Modificado 2 por     : Maribel Julca Rodriguez      --*/      
/*---Fecha Modificaci©n   : 20/04/2005                   --*/       
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI --*/      
/*-------------------------------------------------------*/        
/*---------------------------------------------------------*/    
/*---Modificado 3 por     : Carlos Marquez               --*/    
/*---Fecha Modificaci«n   : 08/08/2005                   --*/    
/*---Detalle Modificaci«n : Manejo de RollBacks Transacciones--*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 4 por     : Carlos Marquez               --*/    
/*---Fecha Modificaci«n   : 19/08/2005                   --*/    
/*---Detalle Modificaci«n : manejo de Provisiones No Autom--*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 5 por     : Mirco Angulo        --*/    
/*---Fecha Modificaci«n   : 13/12/2010                   --*/    
/*---Detalle Modificaci«n : Se adiciono campo ST_GRAV_NGRA--*/    
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/        
/*---Modificado 6 por     : Daniel Gutiérrez          --*/        
/*---Fecha Modificación   : 04/07/2011                   --*/        
/*---Detalle Modificación : Se adiciono campo FE_PAGO para el caso de  
     los recibos x honorario--*/        
/*---------------------------------------------------------*/      
/*---------------------------------------------------------*/      
/*---Comentarios                                         --*/      
/*---                                                    --*/      
/*---                                                    --*/      
/*---------------------------------------------------------*/      
      
/*---------------------------------------------------------*/      
/*---Drop Proc SP_TDREND_GAST_I02                        --*/      
/*---Grant all on SP_TDREND_GAST_I02 to public           --*/       
/*---SP_TDREND_GAST_I02 '01' , 1, 1, '03/01/1999',       --*/      
/*--- '03/31/1999', 'N', 1, 0, 0, NULL , NULL            --*/      
/*---------------------------------------------------------*/      
   
 As    
declare     
@ISCO_EMPR TD_VC_002,       
@ISCO_USUA_MODI   TD_VC_008,    
@INNU_REND_GAST TD_VC_010,       
@IDFE_REND_GAST TD_DT_001,      
@INNU_CORR_SGTE TD_IN_001,      
@ISCO_UNID_CNTB TD_VC_003,        
@ISTI_ENTI TD_VC_001,       
@ISCO_ENTI TD_VC_020,      
@ISDE_ENTI TD_VC_100,       
@ISCO_TIPO_DOCU TD_VC_003,      
@ISNU_DOCU TD_VC_020,      
@INFA_CAMB_DOCU TD_NU_015_006,       
@ISCO_MONE TD_VC_003,      
@ISCO_TIOP_PROV TD_VC_003,      
@INIM_BRUT_AFEC TD_NU_016_004,      
@INIM_BRUT_INAF TD_NU_016_004,      
@ISCO_IMP1 TD_VC_003,      
@INPC_IMP1 TD_NU_009_004,      
@INIM_IMP1 TD_NU_016_004,      
@ISCO_IMP2 TD_VC_003,      
@INPC_IMP2 TD_NU_009_004,      
@INIM_IMP2 TD_NU_016_004,      
@ISCO_IMP3 TD_VC_003,      
@INPC_IMP3 TD_NU_009_004,      
@INIM_IMP3 TD_NU_016_004,      
@INIM_SUBT_TOTA TD_NU_016_004,      
@INIM_DOCU TD_NU_016_004,       
@IDFE_DOCU TD_DT_001,       
@IDFE_REGI_COMP TD_DT_001,      
@INIM_CONV TD_NU_016_004,      
@ISCO_TIPO_OPER TD_VC_003,       
@ISCO_CNTA_EMPR TD_VC_020,      
@ISDE_OBSE_DETA TD_VC_100,      
@ISTI_AUXI TD_VC_001,       
@ISCO_AUXI_EMPR TD_VC_020,      
@ISCO_ORDE_SERV TD_VC_020,      
@ISST_ACTU_PROV TD_VC_001,      
@ISNU_IMPO TD_VC_020,  
@INFA_CAMB_REND TD_NU_015_006,  
@ISST_GRAV_NGRA TD_VC_003,  
@IDFE_PAGO TD_DT_001,
  
@VNNU_CORR TD_IN_001,      
@VSST_AUXI_0008 TD_VC_001,      
@VSST_PROV_AUTO TD_VC_001,      
@VSCO_COND_CONT TD_VC_003,      
@VSST_ASTO_RESU TD_VC_001,      
@VNFA_CAMB_EXTR TD_NU_015_006,      
@VSCO_MONE_NACI TD_VC_003,      
@VSCO_MONE_EXTR TD_VC_003,  
@VSTI_DOCU_DIST TD_VC_003,   
@VSNU_DOCU_DIST TD_VC_020,  
@VDFE_VENC_DIST TD_DT_001,  
@VSST_DOCU_CNTB  TD_VC_001        
      
Begin Tran SP_TDREND_GAST_I02  

 SELECT @ISCO_EMPR = CO_EMPR,       
@ISCO_USUA_MODI = CO_USUA_MODI   ,    
@INNU_REND_GAST = NU_REND_GAST,       
@IDFE_REND_GAST = FE_REND_GAST ,      
@INNU_CORR_SGTE = NU_CORR_SGTE,      
@ISCO_UNID_CNTB = CO_UNID_CNTB,        
@ISTI_ENTI = TI_ENTI,       
@ISCO_ENTI = CO_ENTI,      
@ISDE_ENTI = DE_ENTI,       
@ISCO_TIPO_DOCU = CO_TIPO_DOCU,      
@ISNU_DOCU = NU_DOCU,      
@INFA_CAMB_DOCU = FA_CAMB_DOCU,       
@ISCO_MONE = CO_MONE,      
@ISCO_TIOP_PROV = CO_TIOP_PROV,      
@INIM_BRUT_AFEC = IM_BRUT_AFEC,      
@INIM_BRUT_INAF = IM_BRUT_INAF,      
@ISCO_IMP1 = CO_IMP1,      
@INPC_IMP1 = PC_IMP1,      
@INIM_IMP1 = IM_IMP1,      
@ISCO_IMP2 = CO_IMP2 ,      
@INPC_IMP2 = PC_IMP2,      
@INIM_IMP2 = IM_IMP2,      
@ISCO_IMP3 = CO_IMP3 ,      
@INPC_IMP3 = PC_IMP3,      
@INIM_IMP3 = IM_IMP3,      
@INIM_SUBT_TOTA = IM_SUBT_TOTA ,      
@INIM_DOCU = IM_DOCU,       
@IDFE_DOCU = FE_DOCU,       
@IDFE_REGI_COMP = FE_REGI_COMP ,      
@INIM_CONV = IM_CONV,      
@ISCO_TIPO_OPER = CO_TIPO_OPER ,       
@ISCO_CNTA_EMPR = CO_CNTA_EMPR,      
@ISDE_OBSE_DETA = DE_OBSE_DETA,      
@ISTI_AUXI = TI_AUXI,       
@ISCO_AUXI_EMPR = CO_AUXI_EMPR,      
@ISCO_ORDE_SERV = CO_ORDE_SERV,      
@ISST_ACTU_PROV = ST_ACTU_PROV ,      
@ISNU_IMPO = NU_IMPO,  
@INFA_CAMB_REND = FA_CAMB_REND,  
@ISST_GRAV_NGRA = ST_GRAV_NGRA,  
@IDFE_PAGO = FE_PAGO
FROM #TWREND_GAST_CAJA_01    
      
 If @INIM_IMP1 < 0       
  Select @INIM_IMP1 = Abs(@INIM_IMP1), @INIM_IMP2 = Abs(@INIM_IMP2), @INIM_IMP3 = Abs(@INIM_IMP3)      
      
 Select  @VSST_PROV_AUTO = ST_PROV_AUTO, @VSCO_COND_CONT = CO_COND_CONT      
 From TMPARA_TESO      
 Where CO_EMPR = @ISCO_EMPR      
       
 Insert Into  TDREND_GAST(CO_EMPR, NU_REND_GAST, FE_REND_GAST, NU_CORR_GAST,      
 CO_UNID_CONC, TI_ENTI, CO_ENTI, DE_ENTI, CO_TIPO_DOCU,      
 NU_DOCU_PROV, FA_CAMB_DOCU, CO_MONE, CO_TIOP_PROV,       
 IM_BRUT_AFEC, IM_BRUT_INAF, CO_IMP1, PC_IMP1, IM_IMP1,       
 CO_IMP2, PC_IMP2, IM_IMP2, CO_IMP3, PC_IMP3, IM_IMP3, IM_DOCU,       
 FE_DOCU, IM_CONV, CO_TIPO_OPER, CO_CNTA_EMPR, DE_OBSE,  ST_GRAV_NGRA,     
 TI_AUXI_EMPR, CO_CENT_COST, CO_ORDE_SERV, NU_IMPO,FA_CAMB_REND,CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,  
 FE_PAGO)      
 Values  (@ISCO_EMPR, @INNU_REND_GAST, @IDFE_REND_GAST, @INNU_CORR_SGTE,       
 @ISCO_UNID_CNTB, @ISTI_ENTI, @ISCO_ENTI, @ISDE_ENTI, @ISCO_TIPO_DOCU,      
 @ISNU_DOCU, @INFA_CAMB_DOCU, @ISCO_MONE, @ISCO_TIOP_PROV,      
 @INIM_BRUT_AFEC, @INIM_BRUT_INAF, @ISCO_IMP1, @INPC_IMP1, @INIM_IMP1,      
 @ISCO_IMP2, @INPC_IMP2, @INIM_IMP2, @ISCO_IMP3, @INPC_IMP3, @INIM_IMP3, @INIM_DOCU,       
 @IDFE_DOCU, @INIM_CONV, @ISCO_TIPO_OPER, @ISCO_CNTA_EMPR, @ISDE_OBSE_DETA ,@ISST_GRAV_NGRA,       
 @ISTI_AUXI, @ISCO_AUXI_EMPR, @ISCO_ORDE_SERV, @ISNU_IMPO,@INFA_CAMB_REND,@ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE(),  
 @IDFE_PAGO)      
      
 IF (@@ERROR != 0)      
 Begin       
  RAISERROR 20001 'ERROR DE INSERCION'      
  RollBack Tran SP_TDREND_GAST_I02      
  RETURN      
 End      
      
      
 Select  @VSST_AUXI_0008 = ST_AUXI_0008      
 From TTTIPO_OPER      
 Where  CO_EMPR = @ISCO_EMPR      
 And CO_TIPO_OPER =  @ISCO_TIPO_OPER      
    
 -- PROVISIONA? / Provision Automatica?      
 If @VSST_AUXI_0008 = 'S' And @VSST_PROV_AUTO = 'S'      
 Begin      
  --Provisionado? / Provision Automatica?    
  If @ISST_ACTU_PROV = 'N' And @VSST_PROV_AUTO = 'S'      
  Begin      
      
   Select @VSCO_MONE_NACI = CO_MONE_DEFA, @VSCO_MONE_EXTR = CO_MONE_EXTR      
   From TMPARA_TESO      
   Where CO_EMPR = @ISCO_EMPR      
     
   If @ISCO_MONE != @VSCO_MONE_NACI And @ISCO_MONE != @VSCO_MONE_EXTR      
    Select @VNFA_CAMB_EXTR = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(@ISCO_MONE, @VSCO_MONE_EXTR,      
    @IDFE_DOCU, 1, 'V', 'O', 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_CAMB_DOCU))      
   Else       
    Select @VNFA_CAMB_EXTR = 1.00      
     
   Select @VSST_ASTO_RESU = ST_ASTO_RESU      
   From TMOPRC_RESU T1, TTTIPO_OPER T2, TDTIPO_OPER T3      
   Where T1.CO_EMPR = @ISCO_EMPR      
   And T2.CO_TIPO_OPER = @ISCO_TIOP_PROV      
   And T1.CO_EMPR = T2.CO_EMPR      
   And T2.CO_EMPR = T3.CO_EMPR      
   And T2.CO_TIPO_OPER = T3.CO_TIPO_OPER      
   And T1.CO_OPRC_CNTB = T3.CO_OPRC_CNTB      
       
   Exec SP_TMDOCU_PROV_I02  @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_ENTI, @ISCO_TIPO_DOCU, @ISNU_DOCU,      
   @ISCO_MONE, @ISCO_TIOP_PROV, @VSCO_COND_CONT, @IDFE_DOCU, @ISCO_UNID_CNTB,       
   @IDFE_DOCU, @INFA_CAMB_DOCU, @INIM_BRUT_AFEC, @INIM_BRUT_INAF, 0, 0, 0,      
   'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N',       
   0, 0, 0, 0, @ISCO_IMP1, @INPC_IMP1, @INIM_IMP1, @ISCO_IMP2, @INPC_IMP2,      
   @INIM_IMP2, @ISCO_IMP3, @INPC_IMP3, @INIM_IMP3, 0, 0, 0, 0, 0,       
   @INIM_DOCU, @INIM_DOCU, NULL, NULL, NULL, @ISDE_OBSE_DETA, @INNU_REND_GAST, @IDFE_DOCU,   
  
  'PAG', @IDFE_REGI_COMP, NULL, NULL, 'N', NULL, @IDFE_REND_GAST, @VSST_ASTO_RESU, @ISNU_IMPO, @VNFA_CAMB_EXTR, @IDFE_DOCU,      
   'N', Null, Null, Null, Null,@ISST_GRAV_NGRA  
  
   IF (@@ERROR != 0)      
   Begin       
    RAISERROR 20001 'ERROR DE INSERCION'      
    RollBack Tran SP_TDREND_GAST_I02      
    RETURN      
   End    
     
   Select  @VNNU_CORR = IsNull(Max(NU_CORR), 0) + 1      
   From TDDISP_CCOS      
   Where  CO_EMPR = @ISCO_EMPR      
   And CO_PROV = @ISCO_ENTI      
   And  CO_TIPO_DOCU = @ISCO_TIPO_DOCU      
   And NU_DOCU_PROV = @ISNU_DOCU      
  
  
   Select  @VSST_DOCU_CNTB = ST_DOCU_CNTB  
 From  TMPLAN_EMPR   
 Where  CO_EMPR = @ISCO_EMPR  
 And NU_ANNO = '9999'  
 And  CO_CNTA_EMPR = @ISCO_CNTA_EMPR  
  
  
IF @VSST_DOCU_CNTB = 'S'  
 BEGIN  
        SELECT @VSTI_DOCU_DIST = @ISCO_TIPO_DOCU,   
 @VSNU_DOCU_DIST = @ISNU_DOCU,   
 @VDFE_VENC_DIST = GETDATE()   
END   
ELSE  
BEGIN  
    SELECT @VSTI_DOCU_DIST = NULL,   
 @VSNU_DOCU_DIST = NULL,   
 @VDFE_VENC_DIST = NULL   
  
END  
  
     
   Insert Into TDDISP_CCOS (CO_EMPR , CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,      
   NU_CORR, CO_CENT_COST, CO_CNTA_EMPR, CO_ORDE_SERV, ST_DIST,      
   PO_DIST, IM_DIST, TI_AUXI_EMPR, DE_OBSE, TI_DOCU, NU_DOCU, FE_VENC,  
   CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
   Values  (@ISCO_EMPR, @ISCO_ENTI, @ISCO_TIPO_DOCU, @ISNU_DOCU,      
   @VNNU_CORR, @ISCO_AUXI_EMPR, @ISCO_CNTA_EMPR, @ISCO_ORDE_SERV, 'M',      
   100, @INIM_SUBT_TOTA, @ISTI_AUXI, @ISDE_OBSE_DETA, @VSTI_DOCU_DIST, @VSNU_DOCU_DIST,@VDFE_VENC_DIST,   
   @ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE())        
       
   IF (@@ERROR != 0)      
   Begin       
    RAISERROR 20001 'ERROR DE INSERCION'      
    RollBack Tran SP_TDREND_GAST_I02      
    RETURN      
   End      
  End      
     
  --Provisionado? / Provision Automatica?     
  If @ISST_ACTU_PROV = 'S' And @VSST_PROV_AUTO = 'S'      
  Begin      
   Update  TMDOCU_PROV      
   Set  NU_REND_GAST = @INNU_REND_GAST,      
   IM_PAGA = @INIM_DOCU,      
   CO_ESTA_DOCU = 'PAG',    
   CO_USUA_MODI = @ISCO_USUA_MODI,    
   FE_USUA_MODI = GETDATE()      
   Where  CO_EMPR = @ISCO_EMPR      
   And CO_PROV = @ISCO_ENTI      
   And CO_TIPO_DOCU = @ISCO_TIPO_DOCU      
   And NU_DOCU_PROV = @ISNU_DOCU      
       
   IF (@@ERROR != 0)      
   Begin       
    RAISERROR 20001 'ERROR DE INSERCION'      
    RollBack Tran SP_TDREND_GAST_I02      
    RETURN      
   End      
  End      
 End       
    
 -- PROVISIONA? / Provisionado? / Provision Automatica?    
 If @VSST_AUXI_0008 = 'S' and @ISST_ACTU_PROV = 'S' And @VSST_PROV_AUTO = 'N'      
 Begin      
  Update  TMDOCU_PROV      
  Set  NU_REND_GAST = @INNU_REND_GAST,      
  CO_ESTA_DOCU = 'PAG',    
  IM_PAGA = @INIM_DOCU,    
  CO_USUA_MODI = @ISCO_USUA_MODI,    
  FE_USUA_MODI = GETDATE()      
  Where  CO_EMPR = @ISCO_EMPR      
  And CO_PROV = @ISCO_ENTI      
  And CO_TIPO_DOCU = @ISCO_TIPO_DOCU      
  And NU_DOCU_PROV = @ISNU_DOCU      
      
  IF (@@ERROR != 0)      
  Begin       
   RAISERROR 20001 'ERROR DE INSERCION'      
   RollBack Tran SP_TDREND_GAST_I02      
   RETURN      
  End      
 End      
    
      
Commit Tran    
      
/*--------------------------- Fin -------------------------------- */
GO
